iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Modern Web

Laravel 那麼好用還需要自幹框架嗎系列 第 3

Day 03:串接框架核心

  • 分享至 

  • xImage
  •  

昨天我們建立了一個框架的腳手架,並且能成功的運作內容,看到 Hello World 了。

今天我們試著建立框架的核心部分,並且將框架程式碼和核心部分進行串接。

首先,我們建立一個專案,這邊我使用 reccaval-framework 這個名字。

接著,我們在專案內建立一個 src/Foundation/Application.php,作為我們的第一個類別,內容如下

<?php

namespace Reccaval\Foundation;

class Application
{
    /**
     * The Reccaval framework version.
     *
     * @var string
     */
    const VERSION = '0.0.1';

    /**
     * Get the version number of the application.
     *
     * @return string
     */
    public function version()
    {
        return static::VERSION;
    }
}

然後,我們在專案內建立 composer.json,這邊可以使用 composer init 這個指令協助建立。建立完成之後的內容如下

{  
    "name": "recca/reccaval-framework",  
    "description": "a test project for mimicking laravel/framework",  
    "type": "library",  
    "license": "MIT",  
    "autoload": {  
        "psr-4": {  
            "Reccaval\\": "src/"  
        }  
    },  
    "authors": [  
        {  
            "name": "Recca Chao",  
            "email": "flamerecca711@gmail.com"  
        }  
    ],  
    "require": {}  
}

這邊要特別注意到 "autoload" 裡面的內容,必須要正確的對應專案的資料夾以及命名空間。

如果出錯的話,會導致引用該套件時,類別無法正確地引入。

packagist

接著,我們要將這個專案發佈到 packagist 上面,讓 composer 可以成功的載入這個 library。

首先,我們將這個專案發佈到一個公開的 Github Repo 上面。這邊的範例為 https://github.com/flamerecca/reccaval-framework/

然後,我們幫這個專案加上一個 Tag,標記為 0.0.1

https://github.com/flamerecca/reccaval-framework/releases/tag/0.0.1

接著我們申請一個 https://packagist.org/ 的帳號,並點擊 submit 進到 https://packagist.org/packages/submit ,建立對應的套件

建立完成之後,我們就可以到昨天的測試專案內,透過指令

composer require recca/reccaval-framework:0.0.1

來安裝 reccaval-framework 了。

安裝好之後,我們就可以試著使用我們寫好的框架內容。

我們將原本的 hello.php 改寫如下

<?php

use Reccaval\Foundation\Application;

// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';

echo (new Application)->version();

接著重新執行 docker compose up --build 來載入我們修改後的內容。

接著我們就可以看到畫面上顯示出我們的版本號碼 0.0.1

到這邊,框架的腳手架與框架核心之間的串接就完成了!


上一篇
Day 02:框架架構、Hello World
下一篇
Day 04:捕捉使用者請求
系列文
Laravel 那麼好用還需要自幹框架嗎18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言